package com.io;

import java.io.FileInputStream;// 导入FileInputStream类，用于读取文件
import java.io.FileOutputStream;// 导入FileOutputStream类，用于写入文件
import java.io.IOException;// 导入IOException类，以便处理可能发生的IO异常

public class CopyDemo2 {
    public static void main(String[] args) throws IOException {
        //创建FileInputStream对象，用于读取当前目录下的img_1.png文件
        FileInputStream fis = new FileInputStream("./img_1.png");
        //创建FileOutputStream对象，用于写入当前目录下的img_1_cp.png文件
        FileOutputStream fos = new FileOutputStream("./img_1_cp.png");
        // 获取当前时间的毫秒数，用于记录开始复制的时间
        long start = System.currentTimeMillis();
        // 创建一个大小为10KB的字节数组，用于存储从文件中读取的数据块
        byte[] bytes = new byte[1024 * 10];
        // 使用循环读取文件，直到读取完毕
        // fis.read(bytes)读取一些字节数到字节数组中，并返回实际读取的字节数，如果到达文件末尾则返回-1
        while ((fis.read(bytes)) != -1) {
            fos.write(bytes);// 将字节数组中的数据写入到输出流fos中
        }
        long end = System.currentTimeMillis();// 获取当前时间的毫秒数，用于记录结束复制的时间
        System.out.println("复制完毕用了" + (end - start) + "ms");

        fis.close();// 关闭输入流FileInputStream，释放资源
        fos.close(); // 关闭输出流FileOutputStream，释放资源

    }
}
